Proyecto Clasificación de Paquetes - TELCO

Autores: Cindy Naranjo y Jairo Iván Ordóñez

Facultad: Ingeniería

Programa: Especialización Analítica Estratégica de Datos

2020-2

DEFINICIÓN DEL PROBLEMA


En Colombia, existen más de 66 Millones de abonados de telefonía Móvil distribuido en 7 operadores, donde más del 78% corresponden a usuarios de tipo Prepago*.

Comercialmente, los operadores buscan generar ingresos mediante la compra de Paquetes o uso a granel. Con el fin de identificar patrones sobre los consumos de navegación realizado por los usuarios que descuenten de dichos paquetes, se quieren resolver las siguientes preguntas de negocio:

*Corte al Q4 de 2019 según MINTIC https://colombiatic.mintic.gov.co/679/w3-propertyvalue-47274.html

OBJETIVOS:

Objetivo General:

Objetivos Específicos:

TABLA DE CONTENIDO

  1. Importación de Librerías
  2. Carga de Información Fuente
    2.1. Descripción de Conjunto de Datos
    2.2. Perfilamiento de Datos
  3. Historia de los Datos
  4. Modelado
    4.1. Árbol de Decisión
    4.2. Regresión Logística
    4.3. Naive Bayes
    4.4. SVM
    4.5. Random Forest
  5. Conclusiones

1. Importación de librerías

Para poder realizar los diferentes procesos de manipulación de datos, visualización y ejecución de modelos, es importante importar las librerías requeridas. A continuación, cada una de las librerías usadas con su respectiva explicación de uso:

2. Carga de Información Fuente

Se creó un archivo de configuración el cual contiene la información de conexión a la Base de Datos donde poseemos la información. Realizamos el respectivo cargue usando pandas y creamos nuestra conexión a la Base de Datos MySQL
De igual forma, se creó un archivo con la sentencia SQL realizada para extraer la información. Basado en la función de pandas, creamos nuestro DataFrame principal con la sentencia SQL y ejecutándola en nuestro objeto conexión, posteriormente y como parte de las buenas prácticas, cerramos la conexión a la Base de Datos. De esta manera cumplimos en una gran parte el proceso de extracción automática el cual estábamos buscando como parte de los objetivos del proyecto:

Ejmplo de los datos extraídos:

2.1. Descripción de Conjunto de Datos

Los datos obtenidos contiene los consumos en Bytes de los servicios por día de la semana, tipo de día y código de paquete. Adicionalmente, se cuenta con otras variables de interés como lo es el ingreso percibido por la compra de paquetes y la cantidad de paquetes vendidos para ese día.
Es importante aclarar que, el consumo de los paquetes no es directamente proporcional a la cantidad de paquetes vendidos, dado que, un cliente puede comprar su paquete el día de hoy y consumir en días futuros.

2.2. Perfilamiento de Datos

Creamos un perfilamiento de datos para que, sean ellos mismos los que nos cuenten las relaciones entre las variables, cantidad de vacíos, variabilidad, etc. y se exporta el resultado en un entregable tipo página web en la que se podrá interactuar con las gráficas generadas por el perfilamiento de datos.

3. Historia de los Datos


Creamos un apartado con visualizaciones para poder explicar de mejor manera en qué consisten los datos que estamos extrayendo, identificando tendencias, desviaciones y diferentes enfoques en las que los datos serán los protagonistas.

Empezamos creando un nuevo campo que contenga el consumo total por todos los diferentes servicios

Quisimos ver cómo es el consumo total de navegación por los paquetes que nos interesan por día:

Haciendo una comparación contra el anterior gráfico, podemos evidenciar que, son más los paquetes de Datos que se venden que los Todo Incluido, sin embargo, aquellos Paquetes Todo Incluido mueven más volumen de Navegación.

Con este gráfico podemos evidenciar las relaciones de los consumos por los servicios de redes sociales y ver que, gráficamente se puede clasificar los tipos de Paquete.
Es evidente la diferencia entre los paquetes de Datos y los Todo Incluido incluso a nivel de Servicio

Ahora, para evaluar un poco más al detalle cada uno de los servicios, hemos creado un histograma por cada servicio, discriminado por el tipo de Paquete

4. Modelado


Luego de la visualización de los datos, empleamos diferentes modelos el cual nos permita responder a las diferentes preguntas de negocio que implementamos al inicio de esta investigación.

Vamos a implementar 4 diferentes modelos y hacer el respectivo análisis:

Antes de continuar con el entrenamiento y prueba de los modelos, vamos a crear normalizadores de datos para los tipos de dato categóricos y dividir nuestra muestra en entrenamiento y prueba

Para todos los modelos vamos a utilizar las mismas particiones de entrenamiento y pruebas para ser justos al momento de elegir el mejor modelo. Elegimos una partición de 80% de datos para entrenar los modelos y 20% para probar.

Validamos que la distribución de las categorías de nuestras particiones sea equitativa basado en la variable objetivo

4.1. Árbol de Decisión

El árbol de decisión es un modelo de clasificación Supervisado que, basado en las variables independientes intenta predecir la variable objetivo o dependiente utilizando funciones lógicas de comparación anidadas sobre las variables independientes. Para este modelo vamos a utilizar un listado de profundidades para identificar cuál es el parámetro que mejor predice de acuerdo a la partición de entrenamiento.

Entrenamos nuestros árboles de decisión de acuerdo a las profundidades definidas y los vamos probando con la partición de prueba:

Luego de los entrenamientos, Identificamos cuál es la profundidad con menor error en train y en test:

De acuerdo a los valores generados, la profundidad con mejor balance en error de entrenamiento y prueba, es 3, sin embargo, vamos a ver cómo es el comportamiento de los errores de acuerdo a la profundidad, mediante un gráfico:

El gráfico nos muestra que, el mejor balance de error entre los datos de entrenamiento y de prueba, está mejor posicionado sobre las 7 profundidades del árbol, por lo tanto, entrenamos nuestro modelo con este parámetro de profundidades.

Probamos nuestro modelo con los datos de prueba y medimos la Fiabilidad basado en el verdadero resultado, y lo que el modelo predice:

Ahora creamos la matriz de confusión para ver de manera gráfica cómo predijo el modelo y cuáles eran los valores reales.

4.2. Regresión Logística

La regresión logística es un modelo de tipo regresión utilizado para predecir el resultado de una variable categórica en función de las variables predictoras. Calcula los estimadores más representativos sobre las variables independientes para calcular el resultado de la variable dependiente.

Entrenamos nuestro modelo con los mismos datos que utilizamos para el árbol de decisión

Probamos nuestro modelo con los datos de prueba y medimos la Fiabilidad basado en el verdadero resultado, y lo que el modelo predice:

Ahora creamos la matriz de confusión para ver de manera gráfica cómo predijo el modelo y cuáles eran los valores reales.

4.3. Naive Bayes

El algoritmo clasificador "Bayesiano Ingenuo", son algoritmos de clasificación de apredizaje auto´matico el cual se basan en una técnica de clasificación estadística llamada "teorema de Bayes". El algoritmo asume que todas las variables independientes también son independientes entre si.

Nuevamente, empleamos el proceso de entrenamiento

Probamos nuestro modelo con los datos de prueba y medimos la Fiabilidad basado en el verdadero resultado, y lo que el modelo predice:

Ahora creamos la matriz de confusión para ver de manera gráfica cómo predijo el modelo y cuáles eran los valores reales.

4.4. SVM

Las máquinas de Soporte Vectorial (SVM por sus siglas en inglés Support Vector Machine), son conjuntos de algoritmos de aprendizaje supervisado que permiten la resolución de problemas de clasificación y regresión. Utiliza un hiperplano para poder separar las clases en espacios lo más amplios posibles definiendo un vector entre los 2 puntos o clases que queramos predecir.

Nuevamente, empleamos nuestro proceso de entrenamiento con los datos particionados:

Probamos nuestro modelo con los datos de prueba y medimos la Fiabilidad basado en el verdadero resultado, y lo que el modelo predice:

Ahora creamos la matriz de confusión para ver de manera gráfica cómo predijo el modelo y cuáles eran los valores reales.

4.5. Random Forest

El rándom Forest es una combinación de árboles de decisión no correlacionados donde ejecuta una cantidad definida de árboles, promedia el resultado e identifica cuáles son los mejores parámetros y el mejor score para la clasificación.

Para este proyecto hemos definido una grilla de parámetros el cual, mediante validación cruzada se realizarán la cantidad de modelos necesarios para identificar los mejores parámetros a utilizar en nuestro random Forest. Este proceso puede tardar dada la cantidad de combinaciones que identifique la validación cruzada basado en los parámetros enviados

Luego de realizar la validación cruzada, procedemos a identificar los mejores parámetros para crear nuestro modelo Random Forest

Con los parámetros establecidos, creamos una gráfica que nos permita identificar la importancia de cada variable para clasificar los registros

Ahora creamos la matriz de confusión para ver de manera gráfica cómo predijo el modelo y cuáles eran los valores reales.

5. Conclusiones

  1. Gráficamente es fácil clasificar los 2 grandes grupos de paquetes que tiene comercialmente la compañía dadas sus configuraciones.
  2. No existe un patrón que asegure la migración de los consumos de paquetes de Datos a paquetes Todo Incluido.
  3. El día de la semana no es una variable significativa para predecir la clasificación de los paquetes, si bien se puede identificar alguna tendencia baja sobre todo los domingos o festivos, la proporción de consumo sigue siendo igual
  4. Para ciertos servicios, existen distribuciones bimodales y esto se puede dar por las subcategorías que tengan los paquetes, ya que cada paquete se configura de manera diferente.
  5. El servicio que mayor relevancia tiene para la clasificación de Paquetes es Whatsapp.